iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 16
1

WorkManager

WorkManager是一種延遲異步操作的類,即使應用程序退出或設備重新啟動,也可以運行。

WorkManager會根據運行環境自動選擇不同的管理類
API 23 以上:JobScheduler。
API 14 ~ 22:BroadcastReceiver + AlarmManager。
implementation "androidx.work:work-runtime:2.4.0"
class MyWorker(context: Context, workerParameters: WorkerParameters) : Worker(context, workerParameters) {
    override fun doWork(): Result {
        Log.d("Time", LocalDateTime.now().toString())
        return Result.success()
    }
}

設置啟動的條件

val constraints = Constraints.Builder()
    .setRequiredNetworkType(NetworkType.CONNECTED) //網路狀態
//  .setRequiresBatteryNotLow(true) //不是低電量
//  .setRequiresStorageNotLow(true)//不是低容量
//  .setRequiresCharging(true) //充電
    .build()

啟動Worker(啟動時機塞給Request 調用WorkManager)

//執行一次
val request = OneTimeWorkRequest.Builder(MyWorker::class.java)
    .setConstraints(constraints)
    .build()


//執行時間(最低15分鐘)
val request = PeriodicWorkRequest.Builder(MyWorker::class.java, 3, TimeUnit.HOURS)
    .setConstraints(constraints)
    .build()
    
WorkManager.getInstance(this).enqueue(request)   


上一篇
{Day15}Paging3
下一篇
{Day17}App StartUp
系列文
Kotlin Android Jetpack 30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言